!% -SD !=================================================================== Constant Story "Draak"; Constant Headline "^De eerste scene van De Baron ^Door Victor Gijsbers^"; Include "Parser"; Object LibraryMessages with before [; Miscellany: if(lm_n == 19){ if(verhaaltracker.grot == 1 && verhaaltracker.brand == 0) "Je ziet er heldhaftig uit in je zware harnas; bovendien ben je sterk, snel en voor de duivel niet bang. Als iemand de draak kan verslaan ben jij het."; if(verhaaltracker.grot == 1 && verhaaltracker.brand > 0) "Je bent een pilaar van vuur; aan alle kanten slaan de vlammen uit je vlees, alsof het vuur vanuit je binnenste zelf naar buiten barst.";} ! Changing the description of the protagonist. ]; Include "Verblib"; !============================================================================ ! **** The game objects **** ! **** Special Classes **** Class Prop with before [; Examine: return false; Search: <>; default: print_ret "Dat hoef je in dit verhaal niet te doen."; ], has scenery; ! **** Initial inventory **** Object bijl "strijdbijl" with description "De strijdbijl is vlijmscherp en weegt zo veel dat slechts weinigen hem op kunnen tillen; maar met twee handen kan jij hem met dodelijke snelheid en precisie hanteren.", name 'bijl' 'strijdbijl' 'wapen', has male; Object harnas "volledige wapenrusting" with description [; if(verhaaltracker.brand == 0) "Een volledige wapenrusting van het hardste staal, uitstekend geolied, biedt optimale bescherming. Het geheel zit van achteren met leren gespen vastgesnoerd, en kan alleen door anderen worden losgemaakt."; "De hitte van het drakenvuur is zo intens dat zelfs het staal van het harnas smelt, en zich in de vorm van withete druppels haast bewust een weg je lichaam in zoekt."; ], name 'harnas' 'wapenrusting' 'volledige', before [; Disrobe: "Het harnas zit op je rug vastgegespt; het is onmogelijk het los te maken. Nadat je de draak hebt verslagen en bent teruggekeerd kan je schildknaap dat doen."; ], has worn clothing male; Object helm "helm" with description [; if(self has open) "De helm is functioneel, niet protserig, en sluit nauw aan bij de rest van het harnas. Het vizier staat open, wat beter zicht maar slechtere bescherming geeft."; else "De helm is functioneel, niet protserig, en sluit nauw aan bij de rest van het harnas. Het vizier is gesloten, voor maximale bescherming."; ], before [; Open: if(self has open) "Het vizier is al open geklapt."; else {give self open; "Je open het vizier van de helm.";} return true; Close: if(self hasnt open) "Het vizier is al naar beneden geklapt."; else {give self ~open; "Je sluit het vizier van de helm.";} return true; Disrobe, Drop: if(parent(helm) == player) { give helm ~worn; if(parent(bijl) == player) {move helm to parent(player); "Je zet de helm af, en legt hem op de grond. Je voelt je kwetsbaarder.";} else "Je zet de helm af; het geeft je een kwetsbaar gevoel."; } Take: if(parent(bijl) == player && parent(helm) ~= player) {give helm worn; move helm to player; "Je pakt de helm op en zet hem op je hoofd.";} else return false; Wear: if(TestScope(helm,player)) { if(parent(helm) == player) "De helm staat al op je hoofd."; move helm to player; give helm worn; "Je zet de helm op je hoofd."; } ], name 'helm' 'vizier', has male worn clothing open openable; ! **** Location: grot **** Object grot_hal "Het voorportaal van de grot" with description [; if(verhaaltracker.brand == 0) "De kleine hal is door mensen uitgehouwen en met zwart marmer bekleed. Twee bronzen deuren in het zuiden sluiten de uitgang hermetisch af; in het noorden leidt een smalle grot naar de vurige woonstee van de draak. De grond hier is bezaaid met geblakerde botten en schedels, die flikkerende schaduwen zuidwaarts werpen."; "Tussen de vlammen door zie je de zwarte marmeren wanden van de hal, de botten op de vloer, en de twee bronzen deuren die de enige uitgang vormen."; ], name 'voorportaal' 'portaal' 'hal' 'halletje', n_to grot_grot, before [; Go: if(noun == n_to) {Grot_Hal_N();}; ], has light; [ Grot_Hal_N; if(verhaaltracker.brand == 0) { print "Je probeert om de menselijke beenderen heen te stappen, maar kan niet voorkomen dat er bij elke stap verschillende breken onder het gewicht van jou en je wapenrusting.^"; return false; } else { "In het wilde weg ren je rond, botten en schedels van voorgangers die het niet beter is vergaan onder je voeten verbrijzelend."; } ]; Object grot_deuren "bronzen deuren" grot_hal class Prop, with name 'deuren' 'bronzen' 'brons' 'twee' 'deur', description "Twee bronzen deuren blokkeren de uitgang naar het zuiden. Er is een voorstelling in gegraveerd van een brandende man.", before [; Open: "De deuren zijn vanaf de andere kant vergrendeld, en zelfs jouw kracht kan ze niet openen. De afspraak is dat je klopt wanneer je de draak verslagen hebt."; Close: "De deuren zijn al gesloten."; Lock, Unlock: "De deuren bevatten geen sleutelgat."; Knock: if(verhaaltracker.brand == 0) { "Nog voordat je de draak hebt proberen te doden? Dat zou alleen een lafaard doen."; } else { print "In paniek ren je naar de deuren. De brandende man in het bronzen reli@:ef kijkt je met spottende ogen aan, zijn extatische grijns bij het voelen van de vlammen precies het tegenovergestelde van jouw gepijnigd geschreeuw. Met de stalen handschoen van je rechterhand beuk je zo hard als je kan tegen hem aan; een vervaarlijke, door merg en been snijdende dissonant galmt door de grot.^^Maar de deuren komen niet in beweging, niemand doet open, en nogmaals - terwijl je voelt hoe de hitte van het vuur het levenssap in je aderen verdampt - sla je uit alle macht op de deur; nogmaals het geluid, alsof Satan de gong slaat in het diepst van de hel - maar de deur blijft onbeweeglijk, je voelt hoe je handen langs het koper naar beneden glijden maar je kan niets doen om te blijven staan en de pijn de hitte duisternis..."; EndSceneOne(); return true; } ], has ~open openable pluralname; Object grot_man "brandende man" grot_hal class Prop, with name 'brandende' 'man' 'tekening' 'voorstelling' 'gravure', description "In plaats van de pijn die je zou verwachten op het gezicht van een brandende man, straalt de gegraveerde figuur eerder begerigheid uit. Het is alsof het vuur hem voortdrijft naar het object van zijn lust, wat dat dan ook mag zijn.", has male; Object grot_hal_vuur "vuur" grot_hal class Prop, with name 'vuur' 'vlammen' 'licht', description "Aan het eind van de grot in het noorden zie je grote vlammen. Je kan hier de hitte al voelen.", has ; Object grot_marmer "marmer" grot_hal class Prop, with name 'marmer' 'zwart' 'platen' 'muren' 'wanden' 'muur' 'plafond' 'wand', description "De muren, de wanden en het plafond van de hal zijn helemaal bedekt met platen zwart marmer. De witte aders die er doorheen lopen vormen een patroon dat voor je ogen gaat draaien wanneer je er te lang naar kijkt.", has ; Object grot_aders "patroon" grot_hal class Prop, with name 'aders' 'patroon' 'lijnen', description "Koppig blijf je naar het patroon in het marmer kijken, de lijnen die langzaam beginnen te bewegen, gaan tollen, draaien - je voelt dat je duizelig wordt, en richt je ogen snel weer op de grot waarachter je lot wacht.", has pluralname; Object grot_botten "botten" grot_hal class Prop, with name 'botten' 'bot' 'beenderen' 'been' 'schedels' 'schedel' 'resten' 'skelet' 'skeletten' 'vloer', description "Overal op de grond liggen botten en schedels, veelal zwart van het allesverzengende vuur dat hun eigenaren fataal werd.", before [; Take: "Je wordt liever niet herinnerd aan het falen van zij die hier voor jou waren."; ], has pluralname; Object grot_schaduwen "schaduwen" grot_hal class Prop, with name 'schaduwen' 'schaduw' 'flikkerende', description "De schaduwen van de botten nemen op de vloer macabere vormen aan.", has pluralname; Object grot_grot "Een lage doorgang" with description [; if(verhaaltracker.brand == 0) "De grot is laag, en je moet bukken om er doorheen te kunnen. Op de vloer ligt een dikke laag as. De vlammen die overal in de grote zaal in het noorden uit spleten in de grond komen zijn haast verblindend fel, en de hitte is enorm. Het zweet breekt je aan alle kanten uit. In het zuiden ligt de betrekkelijke koelte van het halletje."; "Je ziet nauwelijks iets door het vuur. De draak is in het noorden, het halletje ligt in het zuiden."; ], name 'doorgang' 'gang' 'grot', n_to grot_zaal, s_to grot_hal, before [; Go: if(noun == s_to) {Grot_Grot_S();} else if(noun == n_to) {Grot_Grot_N();}; Listen: "Uit de zaal in het noorden lijk je beweging te horen, als van het geschuif van een log dier."; ], has light; [ Grot_Grot_S; if(verhaaltracker.brand == 0) { print "Begeleid door het geknars van brekende botten loop je terug de hal in.^"; return false; } else { "Je rent in paniek terug naar de hal, ditmaal zonder te letten op de knoken waarmee de grond bezaait is. Bij elke stap die je zet breken botten onder jouw gewicht en dat van je harnas."; } ]; [ Grot_Grot_N; if(verhaaltracker.brand == 0) { if(parent(bijl) == player) {print "Met de bijl stevig in je handen geklemd, ";} else {print "Ongewapend, ";}; if(parent(helm) == player && helm hasnt open) print "het vizier van je helm naar beneden geklapt - minder eervol, maar verstandig -, "; if(parent(helm) == player && helm has open) print "het vizier van je helm opengeklapt zoals een man van eer betaamt, "; if(parent(helm) ~= player) print "moedig en galant, zonder helm, "; print "treed je de draak tegemoet.^"; return false; } else { "Je rent in paniek rond, weer de zaal van de draak ik, het onheil en het vuur tegemoet."; } ]; Object grot_as "dikke laag as" grot_grot class Prop, with description "Een laag keihard aangestampt as bedekt de hele vloer; je laat er nauwelijks voetstappen in achter.", name 'as' 'laag' 'dikke' 'vloer', before [; Take: "Je bukt je helemaal en schraapt met je gepantserde vingers langs de as, maar er komt niet genoeg los om op te pakken."; ], has male; Object grot_voetstap "voetstappen" grot_grot class Prop, with description "In de uiterst compacte as zijn je voetstappen bijna niet te zien.", name 'voetstap' 'voetstappen' 'voetafdruk' 'voetafdrukken', has pluralname; Object grot_grot_vuur "vuur" grot_grot class Prop, with name 'vuur' 'vlammen' 'licht', description "Metershoge vlammen verlichten de zaal in het noorden.", has ; Object grot_zaal "Een ondergrondse zaal" with description [; if(verhaaltracker.brand == 0) "De zaal is tientallen meters hoog, en honderden meters breed en diep. De grond is bedekt met een dikke laag as, behalve waar brede spleten de rots doorklieven. Metershoge vlammen schieten uit deze spleten omhoog. De hitte is bijna ondraaglijk."; "Je kan je ogen nauwelijks open houden, en ziet alleen flitsen van de zaal - vlammen, kloven, de grot in het zuiden, en, steeds dichter bij, het duivelse monster."; ], name 'zaal', s_to grot_grot, cant_go [; if(verhaaltracker.brand > 0) { print "Je rent in het wilde weg rond, overmand door paniek. Je ziet nauwelijks waar je heen gaat, alles is vuur, vlammen, rook, flikkerend licht. Je struikelt, valt, springt overeind - de angst geeft je zoveel kracht dat je het harnas nauwelijks voelt. Je rent verder in een willekeurige richting, dan, plotseling, stap je in het niets en val je voorover een kloof in. Wanhopig probeer je iets te grijpen, houvast te krijgen, maar de wanden zijn glad en zonder uitsteeksels, en je valt, dieper en dieper. Rook en zwaveldampen vullen de spleet en benemen je de adem. Je hoest en proest, hapt naar lucht, maar krijgt alleen de giftige dampen binnen. Nog voor je de bodem bereikt hebt verlies je het bewustzijn.^"; EndSceneOne(); return true; }; "De enige uitgang ligt in het zuiden."; ], initial [; if(verhaaltracker.draak == 0) { verhaaltracker.draak = 1; StartDaemon(grot_draak); } ], has light; Object grot_draak "draak" grot_zaal with description "Dertig meter lang van kop tot staart, felrood gekleurd, met schubben die blinken alsof ze van het hardste metaal zijn; maar het is het vuur in de ogen en de keel van de draak, het vlammenspel achter zijn rijen bleke tanden, dat echt huiveringwekkend is. Het is meer dan een monster dat vuur spuwt; het is het vuur zelf waar je tegenover staat. Strijd leveren met de draak schijnt je toe als het bevechten van het allesverzengende vuur, als het voeren van oorlog tegen een natuurkracht die met onverzettelijk geweld de mensen een voor een op de knie@:en zal dwingen en nooit overwonnen kan worden.", name 'draak' 'enorme' 'roodgeschubde' 'roodgeschubt' 'duivelse' 'monster' 'rood' 'felrood', counting 0, daemon ! This daemon regulates the movement of the dragon, his attempts to set the player on fire [; ! or eat him, and finally the player's possible death through burning. if(self.counting == 0) {print "^In het midden van de zaal staat de draak, een enorm roodgeschubt monster. Hij draait zijn kop naar je toe, en staart je met twee grote gele ogen aan.^";}; if(self.counting == 1 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^De draak draait zich naar je toe, en stapt met logge passen op je af. Hij opent zijn bek en stoot een kreet uit die de hele grot op zijn grondvesten doet schudden. Even wankel je, maar je weet je evenwicht te hervinden.^"; }; if(parent(player) == grot_grot) { print "^Je rent weg, maar achter je hoor je de donderende voetstappen van de draak, die je achterna komt. Zijn bloedstollende kreet echoot door de onderaardse gewelven.^"; }; }; if(self.counting == 2 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^Een immense straal vuur spuit uit de bek van de draak, langs zijn scherpe tanden, en omringt je volledig. De pijn doet je naar adem happen.^"; verhaaltracker.brand = 1; }; if(parent(player) == grot_grot) { print "^De draak staat nu vlak bij de noordelijke uitgang van de grot. Achterin zijn zwarte muil lijkt een vuur te branden dat elk moment feller wordt.^"; }; if(parent(player) == grot_hal) { print "^Zo snel als je kunt ren je over de botten heen, weg van het afzichtelijke monster. Er komt rook uit de grot, en een laag gegrom.^"; }; } if(self.counting == 3 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^Een immense straal vuur spuit uit de bek van de draak, langs zijn scherpe tanden, en omringt je volledig. De pijn doet je naar adem happen.^"; verhaaltracker.brand = 1; }; if(parent(player) == grot_grot) { print "^De draak steekt zijn kop in de grot, en blaast een immense straal vuur naar binnen. Voordat je kunt reageren ben je omgeven door de vlammen; je kan een schreeuw van pijn niet onderdrukken wanneer je in brand vliegt.^"; verhaaltracker.brand = 1; }; if(parent(player) == grot_hal) { print "^De grot in het noorden verandert in een zee van vlammen, vlammen die elk moment verder de hal in lijken te komen, als de tentakels van een hongerig wezen van vuur en hitte, op zoek naar prooi.^"; }; }; if(self.counting == 4 && verhaaltracker.brand == 0) { if(parent(player) == grot_grot) { print "^De draak heeft zijn kop in de grot gestoken en blaast een immense straal vuur naar binnen. Voordat je kunt reageren ben je omgeven door de vlammen; je kan een schreeuw van pijn niet onderdrukken wanneer je in brand vliegt.^"; verhaaltracker.brand = 1; }; if(parent(player) == grot_hal) { print "^Nogmaals klinkt de kreet van de draak, hoog, onaards, vol woede. Een moment later barst het vuur uit de grot de hal in, tot in de verste hoeken. Er is geen uitweg, en voor je het weet hebben de vlammen je volledig omsloten. De pijn die je voelt wanneer je in brand vliegt doet je naar adem happen.^"; verhaaltracker.brand = 1; }; }; if(self.counting > 3 && parent(player) == grot_zaal) { print "^Je kan nauwelijks zien wat er gebeurt, gehuld als je bent in een dodelijke wolk van vlammen, maar wanneer de scherpe tanden van de draak dwars door je wapenrusting heen je lichaam binnendringen wordt je je van je lot bewust. Met een afschuwelijk krakend geluid - mijn harnas? mijn botten?, schiet er door je heen - zet de draak zijn tanden op elkaar. Je mond vult zich met bloed, je hele lichaam schreeuwt in pijn, en de duisternis komt als een zegen...^"; EndSceneOne(); }; if(verhaaltracker.brand == 2) { print "^Je bent omgeven door vlammen, en kan nauwelijks nog iets zien. De hitte in het harnas is ondraaglijk.^"; }; if(verhaaltracker.brand == 3) { print "^De pijn wordt elk moment erger. Je slaat wild om je heen, in de hoop de vlammen zo uit te slaan, maar ze lijken alleen maar groter te worden. Tot je afgrijzen voel je hoe het harnas langzaam begint te smelten.^"; }; if(verhaaltracker.brand == 4) { print "^Het smeltende metaal dringt langzaam je huid in, wordt @'e@'en met je vlees. Je ziet niets meer, je hoort niets meer, alleen pijn voel je nog wanneer je op je knie@:en zakt, een laatste kreet uitstoot voordat je stembanden wegbranden, en de geest geeft. Duisternis valt over je heen als een koele deken...^"; EndSceneOne(); }; self.counting++; if(verhaaltracker.brand > 0) verhaaltracker.brand++; ], attack 0, life [; Attack, ThrowAt: if(self.attack > 0 || verhaaltracker.brand > 0) { print "Je verbijt je pijn en rent nogmaals op het ondier af - al moet je er met je eigen leven voor betalen, het monster zal sterven. Tussen de vlammen door zie je de twee grote gele ogen; "; if(parent(bijl) == player) print "je heft je bijl om hem er precies tussen te planten."; if(parent(bijl) ~= player) print "je balt je vuisten en strekt je armen precies zo wijd dat je ze allebei tegelijk kan raken."; print " Maar plotseling beukt de staart van de draak je vanaf je linkerkant omver, de kracht zo groot dat je meters door de zaal vliegt voordat je met je hoofd tegen de wand knalt."; if(helm has worn) print " De helm voorkomt dat je onmiddellijk het bewustzijn verliest, en je ziet de kop van de draak naderen, zijn muil wijd open - nogmaals blaast hij zijn vuur over je heen, en na een korte gil die je zelf niet meer kan horen valt de duisternis als een koele deken over je heen.^"; if(helm hasnt worn) print " Je schedel breekt onmiddellijk, en alles wordt zwart.^"; EndSceneOne(); return true; }; if(self.attack == 0 && verhaaltracker.brand == 0) { if(parent(bijl) == player) print "Met de bijl geheven stap je af op de draak, vastbesloten hem een kopje kleiner te maken. "; if(parent(bijl) ~= player) print "Met alleen je gepantserde handen als wapen stap je op de draak af, vastbesloten hem met een fikse vuistslag te overmeesteren. "; print "Het ondier kijkt je aan met een priemende blik, en opent zijn bek. Decimeters lange tanden staan in twee rijen achter elkaar, en diep in het duister van zijn keelgat lijkt een vuur te branden. Maar je laat je niet intimideren, en blijft met ferme passen op hem aflopen. Dan - voordat je er erg in hebt wat er gebeurt - barst het vuur naar buiten, uit de bek van de draak, een straal van tientallen meters die je van top tot teen omhult. De pijn doet je naar adem happen.^"; verhaaltracker.brand = 1; }; self.attack++; return true; ], has male animate scenery; Object grot_spleten "spleten" grot_zaal class Prop, with description "Brede spleten doorkruisen de zaal. De bodem is niet te zien vanwege de vlammen die er overal uit naar boven schieten.", name 'spleet' 'spleten' 'kloof' 'kloven', before [; Enter: if(verhaaltracker.brand > 0) { print "Je kiest de snelste weg naar het einde, en springt in een van de diepe spleten. Je valt en valt, door vuur en rook, dieper en dieper, tot de spleet uitkomt in een onderaards gewelf uitgespannen boven een meer van borrelende lava. Even, een fractie van een hartslag, verwonder je je over dit prachtige schouwspel - dan val je in de lava, en je voelt hoe je hele lichaam vuur wordt, hoe je geest en ziel vuur worden, vlammen, hitte, licht! - dan wordt alles duister."; EndSceneOne(); return true; } else { "In de spleten staat alleen de dood je te wachten."; }; ], has pluralname container open enterable; !=========================================================================== ! **** Special objects and routines **** Object verhaaltracker with grot 1, brand 0, draak 0, has ; [EndSceneOne; print "^^Normaliter zou je nu doorgaan naar de rest van het verhaal.^"; deadflag = 1; ! Remove this line later!! ]; [PlayerOrders; Attack: if(noun == player && actor == player) { if(verhaaltracker.grot == 1 && verhaaltracker.brand > 0 && parent(bijl) == player) { print "De pijn, het licht, de draak - alles verdwijnt naar de achtergrond wanneer je je terugtrekt in de innerlijke kalmte van je ziel. Je hebt verloren, je queeste is mislukt; je kan alleen nog de eer aan jezelf houden. Rustig, bedaard, met snelheid en precisie maak je je klaar. "; if(helm has worn) print "De helm zet je af. "; print "Je houdt de bijl stevig vast, draait het blad naar je toe, en slaat met een enkele klap je eigen hoofd doormidden."; EndSceneOne(); return true; }; }; return false; default: return false; ]; !=========================================================================== ! **** New verbs **** [ KnockSub; "Het lijkt weinig zinvol om daarop te kloppen."; ]; !============================================================================ ! Entry point routines [Initialise; location = grot_hal; ! Starting Loctaion move bijl to player; ! Player starts with axe move harnas to player; ! Player starts with suit of armour move helm to player; ! Player starts with helmet lookmode = 2; ! like the VERBOSE command @set_colour 9 2; @erase_window -1; ! White text on black background player.orders = PlayerOrders; print "^^^^De bronzen deuren vallen achter je dicht, en je hoort hoe de grendel ervoor wordt geschoven. Er is geen weg terug; het is jou, of de draak. Met je bijl in je bepantserde hand stap je naar voren, de hitte tegemoet.^^^"; ! Text at the beginning of the game. ]; !============================================================================ !Standard and extended grammar Include "GrammarD"; Extend 'zet' first * noun 'op' -> Wear * noun 'af' -> Disrobe; Extend 'neem' * noun 'af' -> Disrobe; Verb 'klop' * 'op' noun -> Knock; Verb 'val' * noun 'aan' -> Attack; Extend only 'spring' first * 'in' noun -> Enter; !============================================================================